﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using BussinessLogicTecnoPez.Produccion.Compras.MatrizHomogeneizacion;

namespace BussinessLogicTecnoPez.Produccion.Compras
{
    /// <summary>
    /// Clase creada para gestionar la selección de ofertas
    /// </summary>
    /// 
    [Serializable]
    public class GestorOferta
    {
        public static List<ProveedorOferente> GetProveedoresOferentes(int idInsumo)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append("SELECT DISTINCT PROVEEDORES.IDPROVEEDOR, PROVEEDORES.CODIGO, PROVEEDORES.RAZONSOCIAL ");
            strSQL.Append("FROM OFERTAS INNER JOIN ");
            strSQL.Append("DETALLEOFERTA ON OFERTAS.IDOFERTA = DETALLEOFERTA.IDOFERTA INNER JOIN ");
            strSQL.Append("PROVEEDORES ON OFERTAS.IDPROVEEDOR = PROVEEDORES.IDPROVEEDOR ");
            strSQL.Append("WHERE DETALLEOFERTA.IDINSUMO = ?");

            try
            {
                DataAccessTecnoPez.SQL objSQL = new DataAccessTecnoPez.SQL();
                OleDbDataReader objDR = null;
                if (!objSQL.IsConnected)
                    return null;

                object[] objParam = new object[1];
                objParam[0] = idInsumo;
                objSQL.SqlString = strSQL.ToString();
                objDR = objSQL.GetDataReader(objParam); ;

                if (objDR == null || !objDR.HasRows)
                {
                    objSQL.Close();
                    return null;
                }

                List<ProveedorOferente> objList = new List<ProveedorOferente>();
                ProveedorOferente objProveedor = null;
                while (objDR.Read())
                {
                    objProveedor = new ProveedorOferente();
                    objProveedor.IsSelected = false;
                    objProveedor.RazonSocial = objDR["RAZONSOCIAL"].ToString();
                    objProveedor.Codigo = objDR["CODIGO"].ToString();
                    objProveedor.IdProveedor = int.Parse(objDR["IDPROVEEDOR"].ToString());

                    objList.Add(objProveedor);
                }
                objDR.Close();
                objSQL.Close();
                return objList;
            }
            catch
            {
                return null;
            }
        }

        public static List<FactorAnalizado> GetFactores()
        {
            List<Factor> objListFactores = Factor.getManager.GetAll();
            List<FactorAnalizado> objSeleccionados = new List<FactorAnalizado>();
            FactorAnalizado objFactorSeleccionado = null;
            foreach (Factor objFactor in objListFactores)
            {
                objFactorSeleccionado = new FactorAnalizado(objFactor);

                objSeleccionados.Add(objFactorSeleccionado);
            }

            //siempre se agrega el factor costo
            objFactorSeleccionado = new FactorAnalizado();
            objFactorSeleccionado.Descripcion = "Costo";
            objFactorSeleccionado.IdFactor = -1;
            objFactorSeleccionado.Maximizante = false;

            objSeleccionados.Add(objFactorSeleccionado);
            return objSeleccionados;
        }
    }
}
